package controllerActions;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.ResourceBundle;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import beans.Auftrag;
import beans.Benutzer;
import beans.MeinPortfolio;
import connection.DBConnection;
import dao.AuftragDAO;
import dao.BenutzerDAO;
import dao.MeinPortfolioDAO;

public class AktieKaufen {
	public void aktieKaufen(HttpServletRequest request, HttpSession session, BenutzerDAO benutzerDAO, AuftragDAO auftragDAO, DBConnection dbc) throws SQLException{
		ResourceBundle properties = ResourceBundle.getBundle("controller.string");
		ArrayList<Auftrag> auftragList = new ArrayList<Auftrag>();
		Auftrag auftrag = new Auftrag();
		auftragDAO.useConnection(dbc.getDBInfos());
		auftragList = auftragDAO.selectAuftraege();
		int index = Integer.valueOf(request.getParameter("index"));
		int anzahlRequest = Integer.valueOf(request.getParameter("anzahlKaufen"));
		int anzahlDefinitivKaufen;
		int anzahlInDB = 0;
		boolean deleteAuftrag = false;
		auftrag = auftragList.get(index);
		
		if(auftrag.getAnzahl() <= anzahlRequest){
			anzahlDefinitivKaufen = auftrag.getAnzahl();
			deleteAuftrag = true;
		}else{
			anzahlDefinitivKaufen = anzahlRequest;
			anzahlInDB = auftrag.getAnzahl() - anzahlRequest;
		}
		
		int benutzerFKVerkaeufer = auftrag.getBenutzer_FK();
		int userIDKaeufer = (int) session.getValue("UserID");
		int preis = anzahlDefinitivKaufen * auftrag.getPreis();
		benutzerDAO.useConnection(dbc.getDBInfos());
		Benutzer verkaeufer = benutzerDAO.findBenutzer(benutzerFKVerkaeufer);
		Benutzer kaeufer = benutzerDAO.findBenutzer(userIDKaeufer);
		benutzerDAO.updateKontostand(kaeufer.getKontostand() - preis, userIDKaeufer);
		benutzerDAO.updateKontostand(verkaeufer.getKontostand() + preis, benutzerFKVerkaeufer);
		MeinPortfolio meinPortfolio = new MeinPortfolio();
		meinPortfolio.setAktie_FK(auftrag.getAktie_FK());
		meinPortfolio.setAnzahl(anzahlDefinitivKaufen);
		meinPortfolio.setBenutzer_FK(userIDKaeufer);
		MeinPortfolioDAO meinPortfolioDAO = new MeinPortfolioDAO();
		meinPortfolioDAO.useConnection(dbc.getDBInfos());
		meinPortfolioDAO.insertPortfolio(meinPortfolio);
		auftragDAO.useConnection(dbc.getDBInfos());
		if(deleteAuftrag){
		auftragDAO.deleteAuftrag(auftragList.get(index).getAuftrag_ID());
		}else{
			auftragDAO.updateAuftragAnzahl(auftrag.getAuftrag_ID(), anzahlInDB);
		}
		
		session.putValue("meldung", properties.getString("meldung4") + auftrag.getAuftrag_ID());
	}
}
